package controller;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.jws.WebService;
import javax.websocket.Session;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.socket.CloseStatus;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;
@Controller(value="myWsHandler")
@RequestMapping("/ws/test1")
public class MyWsHandler extends TextWebSocketHandler{
		private List<WebSocketSession> sens=new ArrayList<WebSocketSession>();
	 	@Override
	    public void handleTextMessage(WebSocketSession session, TextMessage message) {
	        //接收到客户端消息时调用
	        System.out.println("text message: " + session.getId() + "-" + message.getPayload());
	        for(WebSocketSession sen:sens){
	        		try {
						sen.sendMessage(message);
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
	        }
	    }

	    @Override
	    public void afterConnectionEstablished(WebSocketSession session)
	            throws Exception {
	        // 与客户端完成连接后调用
	        System.out.println("afterConnectionEstablished");
	        System.out.println("getId:" + session.getId());
	        System.out.println("getLocalAddress:" + session.getLocalAddress().toString());
	        System.out.println("getTextMessageSizeLimit:" + session.getTextMessageSizeLimit());
	        System.out.println("getUri:" + session.getUri().toString());
	        System.out.println("getPrincipal:" + session.getPrincipal());
	        session.sendMessage(new TextMessage("你好".getBytes()));
	       sens.add(session);
	    }

	    @Override
	    public void handleTransportError(WebSocketSession session,
	            Throwable exception) throws Exception {
	        // 消息传输出错时调用
	        System.out.println("handleTransportError");
	    }

	    @Override
	    public void afterConnectionClosed(WebSocketSession session,
	            CloseStatus closeStatus) throws Exception {
	        // 一个客户端连接断开时关闭
	        System.out.println("afterConnectionClosed");
	    }
	    @Override
	    public boolean supportsPartialMessages() {
	        // TODO Auto-generated method stub
	        return false;
	    }
}
